package cc.linker.steplink.crm.merchanth5.service.acs;

import cc.linker.steplink.crm.merchanth5.pojo.acs.ProtectPo;

import java.util.List;

public interface ProtectRecordService {

    /**
     * @Description: 插入结算中心退款账单
     * @Param: orderSn 订单号
     * @Param: recId 订单商品表索引
     * @Param: goodsPrice 商品单价（单位：分，默认0）
     * @Param: goodsNum 商品数量（单位：分，默认0）
     * @Param: shippingFee 商品运费（单位：分，默认0）
     */
    void addRefund(String orderSn, Long recId, Long goodsPrice, Long goodsNum, Long shippingFee);

    List<ProtectPo> addNewRecord(Long recId);

    List<ProtectPo> addOldRecord(String orderSn, Long goodsPrice, Long goodsNum, Long shippingFee);

    /**
     * 根据订单号返回退款列表
     */
    List<ProtectPo> refundOrder(String orderSn);

    /**
     * 查询完结订单号
     */
    List<String> getOrderSnList();

    /**
     * 根据订单号进行结算
     */
    List<ProtectPo> settleOrder(String orderSn);

    List<ProtectPo> reduceList(List<ProtectPo> inProtectList, List<ProtectPo> outProtectList);

    List<ProtectPo> settelreduceList(List<ProtectPo> inProtectList, List<ProtectPo> outProtectList);

    /**
     * 合并完成后插入老表
     */
    void insertOldTrder(List<ProtectPo> protectList);

    void updateIsEnd(String orderSn, Integer isEnd);

    /**
     * 退款成功，修改订单表，订单商品表，结算中心表(退款状态和endTime)，冻结余额
     *
     * @param orderSn
     * @param orgId
     * @param recId
     */
    void overAction(String orderSn, String orgId, Long recId);

    /**
     * 退款扣除冻结金额
     *
     * @param : Protect 退款的记录
     */
    void reduceFreeze(ProtectPo protect);

    /**
     * 退款失败，修改订单表，订单商品表，结算中心表(退款状态和endTime)
     *
     * @param orderSn
     * @param orgId
     * @param recId
     * @param refundStatus 7或0
     */
    void revokeAction(String orderSn, String orgId, Long recId, Integer refundStatus);

    Integer getOtherOrderSnList(String orderSn);

    void updateOrderIsEnd(String orderSn, Integer isEnd);

    void doneVipOrder(String orderSn);

    void updateIntegralOrderIsEnd(String orderSn, int isEnd);
}
